Multiple versions of source codes may be authored to perform the same function with different considerations. For example, an author may code a library routine for a common data processing task or function, such as graphic rendering routine, to produce separate source codes, based on, for example, different algorithms or optimization parameters etc. Each source code can be compiled into a separate executable as a different implementation to perform the common task.
As system may be installed with a library including theses multiple implementations of the common task (or a library routine), it is not uncommon to require manual configurations to specify which one of the executable codes should be used for the system. However, with the increase of complexity of modern data processing systems, manual configurations have become too tedious to be practical.
Further, a programmer may provide multiple versions of source codes for implementing a same task without considering all possible variations in actual operating environments where these codes will be executed. In fact, it may be increasingly difficult or even impossible to take all relevant variations in actual operating environments into considerations when designing the code.
Therefore, current approaches from a system to adapt to actual operating environments are impractical, not comprehensive and not optimized.